[c语言]1.0/3*3 结果不等于1? 怎样才能等于1?

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:47:37
RT
用TC!!! 能不能四舍五入啊? 反正能等于1就行!

这个问题我以前问过,
不一定等于1的,大多编译器是这样算的:
1.0/3=1.33333333333333333333;(它对超出精度部分舍去)
0.333333333333333333333333*3=0.9999999999999999999999999;
于是就不等于1了
但我用过的有一个编译器就能让这个结果为1.00000000000000000000,貌似是对超出精度的部分四舍五入了...

你那不是四舍五入的问题,是编译器本身的问题.
在一些先进的编译器里面,这个值应该会等于1的.
在TC在编译,为了避免这种情况可以用笨一点的办法:
(1.0/3+0.000003)/3
加上0.000003应该不会对以后的数据引起太大的麻烦,这个值不应过大,也不能太小,0.000002或者0.000003都行吧.

--------------------------
基本上来说这个表达式是否等于1,跟编译器相关.

似乎不行呀,

1.0%(3*3)好像就会等于1吧